#!/usr/bin/env python3
"""
Environment Setup Script
环境配置脚本 - 自动检查虚拟环境并生成密钥
"""

import os
import secrets
import sys
from pathlib import Path

def generate_secret_key(length: int = 32) -> str:
    """生成安全的随机密钥"""
    return secrets.token_urlsafe(length)

def check_virtual_environment():
    """检查是否在虚拟环境中"""
    return (
        hasattr(sys, 'real_prefix') or
        (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix) or
        os.getenv('VIRTUAL_ENV') is not None
    )

def setup_environment():
    """设置环境配置"""
    print("🚀 Media Create GUI - 环境配置设置")
    print("=" * 40)
    
    # 检查虚拟环境
    if not check_virtual_environment():
        print("⚠️  未在虚拟环境中运行")
        print("建议先运行: python scripts/setup_dev_env.py")
        response = input("是否继续？(y/N): ")
        if response.lower() != 'y':
            return
    
    # 检查.env.example是否存在
    env_example = Path(".env.example")
    if not env_example.exists():
        print("❌ 未找到.env.example模板文件")
        return
    
    # 检查.env是否已存在
    env_file = Path(".env")
    if env_file.exists():
        print("⚠️  .env文件已存在")
        response = input("是否覆盖？(y/N): ")
        if response.lower() != 'y':
            return
    
    # 读取模板
    print("📖 读取环境模板...")
    env_content = env_example.read_text()
    
    # 生成新的密钥
    print("🔑 生成新的密钥...")
    secret_key = generate_secret_key()
    
    # 替换密钥
    env_content = env_content.replace(
        'SECRET_KEY="your-secret-key-here-minimum-32-characters-long"',
        f'SECRET_KEY="{secret_key}"'
    )
    
    # 写入新的.env文件
    print("💾 写入.env文件...")
    env_file.write_text(env_content)
    
    print("\n✅ 环境配置完成！")
    print("📝 请编辑 .env 文件，填入以下信息:")
    print("  - 数据库连接信息 (DATABASE_URL)")
    print("  - AI模型API密钥 (ARK_API_KEY, ALI_API_KEY, OPENAI_API_KEY)")
    print("  - 其他必要的配置项")
    print(f"\n🔑 已生成新的SECRET_KEY: {secret_key[:16]}...")
    print("\n⚠️  切勿将真实的API密钥等敏感信息提交到版本控制！")

if __name__ == "__main__":
    setup_environment()